package com.itheima.d07_api_objects;

import cn.hutool.core.util.ObjectUtil;
import com.itheima.d06_api_object.Pig;

import java.util.Objects;

/**
 * 目标：掌握Objects工具类中提供常用方法
 * equals方法
 * isNull方法
 * nonNull方法
 */
public class Test {

    public static void main(String[] args) {
        //需求：判断两个对象是否相等
        Pig pig1 = null;
        Pig pig2 = new Pig("小花", 2, "女");

        //问题：代码不严谨，可能报nullpointer异常
        if(pig1!=null){
            if (pig1.equals(pig2)) {
                System.out.println("pig1和pig2相等");
            } else {
                System.out.println("pig1和pig2不相等");
            }
        }else{
            if(pig2==null){
                System.out.println("pig1和pig2相等");
            }else{
                System.out.println("objects:pig1和pig2不相等");
            }
        }

        System.out.println("=================================");

        //解决方案一：每次调用equals前都需要进行非null判断（繁琐）
        //解决方案二：使用Objects工具类，提供更严谨的功能方法equals
        //优点：安全，简洁
        if(Objects.equals(pig1, pig2)){
            System.out.println("Objects:pig1和pig2相等");
        }else {
            System.out.println("objects:pig1和pig2不相等");
        }

        //Objects提供其他的方法：
        System.out.println(Objects.isNull(pig1)); //isNull()  等价于 ==
        System.out.println(Objects.nonNull(pig1));//nonNull()  等价于 !=


        System.out.println("=================================");

        if(ObjectUtil.equals(pig1, pig2)){
            System.out.println("hutool:pig1和pig2相等");
        }else {
            System.out.println("hutool:pig1和pig2不相等");
        }
    }

}












